#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/mman.h>
#include "lcd.h"
#include "word.h"
#include <linux/input.h>
#include "touch.h"
#include "bmp.h"
#include <pthread.h>

int get_touch()
{

    struct input_event ev;
    int fd;
    fd = open("/dev/input/event0", O_RDWR);
    if (fd == -1)
    {
        perror("open fb0 error"); // 打印错误信息
        return -1;
    }
    int x = -1, y = -1;

    while (1)
    {
        // 打开触摸文件
        read(fd, &ev, sizeof(ev));
        // 解析坐标
        if (ev.type == EV_ABS) // 触摸事件
        {
            if (ev.code == ABS_X)
            {
                x = ev.value;
            }
            else if (ev.code == ABS_Y)
            {
                y = ev.value;
            }
            else if (ev.code == ABS_PRESSURE && ev.value == 0)
            {
                break;
            }
        }
        else if (ev.type == EV_KEY && ev.value == 0)
        {
            break;
        }
    }
    // show_a_rectangle(200 - 80, 200, 200, 31, 0xFFFFFF);
    // show_number(200, 200, x, 0xFF0000);
    // show_number(300, 200, y, 0xFF0000);
    printf("%d\n", x);
    printf("%d\n", y);

    close(fd);
    return 1;
}

// 获取滑动方向
int get_direction()
{
    struct input_event ev;
    int fd;
    fd = open("/dev/input/event0", O_RDWR);
    if (fd == -1)
    {
        perror("open fb0 error"); // 打印错误信息
        return -1;
    }
    int x = -1, y = -1;
    int begin1 = -1, begin2 = -1, end1 = -1, end2 = -1;
    int i = 0, j = 0;
    while (1)
    {
        // 打开触摸文件
        read(fd, &ev, sizeof(ev));
        // 解析坐标
        if (ev.type == EV_ABS) // 触摸事件
        {
            if (ev.code == ABS_X)
            {
                x = ev.value;
                end1 = ev.value;
                if (i == 0)
                {
                    begin1 = ev.value;
                }
                i++;
            }
            else if (ev.code == ABS_Y)
            {
                y = ev.value;
                end2 = ev.value;
                if (j == 0)
                {
                    begin2 = ev.value;
                }
                j++;
            }
            else if (ev.code == ABS_PRESSURE && ev.value == 0)
            {
                break;
            }
        }
        else if (ev.type == EV_KEY && ev.value == 0)
        {
            break;
        }
    }
    printf("%d\n", x);
    printf("%d\n", y);
    
    //右滑
    if (end1 - begin1 > 0 && abs(end1 - begin1) > abs(end2 - begin2))
    {
        return RIGHT;
    }
    //左滑
    if (end1 - begin1 < 0 && abs(end1 - begin1) > abs(end2 - begin2))
    {
        return LEFT;
    }
    //下滑
    if (end2 - begin2 > 0 && abs(end1 - begin1) < abs(end2 - begin2))
    {
        return DOWN;
    }
    //上滑
    if (end2 - begin2 < 0 && abs(end1 - begin1) < abs(end2 - begin2))
    {
        return UP;
    }
    return -1;
}

//获取点击位置
int get_position()
{
    struct input_event ev;
    int fd;
    fd = open("/dev/input/event0", O_RDWR);
    if (fd == -1)
    {
        perror("open fb0 error"); // 打印错误信息
        return -1;
    }
    int x = -1, y = -1;
    while (1)
    {
        // 打开触摸文件
        read(fd, &ev, sizeof(ev));
        // 解析坐标
        if (ev.type == EV_ABS) // 触摸事件
        {
            if (ev.code == ABS_X)
            {
                x = ev.value;
            }
            else if (ev.code == ABS_Y)
            {
                y = ev.value;
            }
            else if (ev.code == ABS_PRESSURE && ev.value == 0)
            {
                break;
            }
        }
        else if (ev.type == EV_KEY && ev.value == 0)
        {
            break;
        }
    }
    printf("%d\n", x);
    printf("%d\n", y);
    close(fd);
    int tx=x/1.28;
    int ty=y/1.25;
//    //开关控制
//     //开关1
//     if (tx>726&&tx<776&&ty>106&&ty<136)
//     {
//         return KEY1;
//     }
//     //开关2
//     if (tx>726&&tx<776&&ty>166&&ty<196)
//     {
//         return KEY2;
//     }
//     //开关3
//     if (tx>726&&tx<776&&ty>235&&ty<265)
//     {
//         return KEY3;
//     }
//     //音乐控制
//     if (tx>120&&tx<160&&ty>300&&ty<340)
//     {
//         return KEY4;
//     }
//     //音乐上一首
//     if (tx>60&&tx<100&&ty>300&&ty<340)
//     {
//         return KEY_TURN_L;
//     }
//     //音乐下一首
//     if (tx>180&&tx<220&&ty>300&&ty<340)
//     {
//         return KEY_TURN_R;
//     }
    return -1;
}